Stm32 |
您所在的位置:网站首页 › stm32 usb鼠标 › Stm32 |
简介: 利用stm32自身功能,采集adc,并利用usb连接电脑实现手柄功能。 材料 (软件): stm32c8t6最小系统板 摇杆 网络图片,侵删3. USB线及ST-LINK 4. Keil-Mdk及Cubemx 一、基础配置 1. sys设置SW(我是使用SW烧入) SYS2. 时钟配置。 时钟配置3. ADC配置 ADC配置(我使用了4通道ADC)4. 勾选USB及USB_DEVICE,配置选用默认即可。(并选择HID) USB_DEVICE中选择5. 最后引脚如下图(不包括GPIO及串口引脚) 二、代码 1. ADC读取(注意,暂时不用的CH最好接地,否则各通道会互相干扰)。 依次读取四个通道的ADC2. 数据处理及发送 发送设置要传输的数据 至此,ADC读取完成。下面配置USB。注意main.c中要#include “usbd_hid.h”
3. 修改usbd_hid.c的报文相关配置。(告诉主机PC插入的usb是什么设备,cubemx默认生成为鼠标设备报文) 函数参数的意义可参考https://blog.csdn.net/zhoutaopower/article/details/82469665 需要修改的有 1. 每一个函数中注释为/*wItemLength: Total length of Report descriptor*/的数值,共3处。(如何修改见下文) 2. 注释为/*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/的数值,1是键盘,2是鼠标,其他(我们的手柄)都是0. 3. 最后修改报告HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE]中的值(关键)。可以用HID Descriptor tool生成。(如下图,可根据自己的需要配置) 左边是MDK,右边为HID Descriptor tool这是也就可以填第一处需修改的地方(wItemLength)。也就是你的报告中的长度,我这里有27个数字,故修改wItemLength处为27。 如图推荐阅读https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/ 三、如此,可在设备及打印机看见我们的手柄了, 设备及打印机还可在游戏控制器中进行校准及测试。 本案例简单验证了stm32手柄项目的可行性,也还要很大改进空间。 演示视频地址:STM32-USB-手柄(一) 原文地址:https://space.bilibili.com/121940795/article |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |